10 POKE56,56:CLR:DV=PEEK(186):IFDV<8ORDV>29THENDV=8 12 POKE53371,0 20 SYS57812"FONT2",DV,0:POKE780,0:POKE781,0:POKE782,56:SYS65493:POKE53272,31 30 DV=PEEK(186):IFDV<8ORDV>29THENDV=8 40 SYS57812"WH",DV,0:POKE780,0:POKE781,0:POKE782,192:SYS65493 50 GOSUB80:REM INSTRUCTIONS FOX AND HOUNDS FLOYD R KIRK 60 GOSUB1910:REM CHOICE 70 GOTO400 80 DEFFNT(X)=2^(X-1):B1$=" " 90 B$=" [157][157][157][157] ":R$="[177][187][167][170][157][157][157][157][175][178][174][163][144]":W$="[184][190][179][189][157][157][157][157][173][255]& [144]" 100 POKE53280,15:POKE53281,15:POKE646,0:PRINT"" 110 GOSUB3000 120 PRINT" [194]E EITHER THE FOX OR THE HOUNDS AND" 130 PRINT"PLAY THE COMPUTER, OR PLAY BOTH SIDES." 140 PRINT"[212]HE SIDES ALTERNATE ONE MOVE AT A TIME" 150 PRINT"TO A CONNECTING EMPTY SQUARE. [212]HE THREE" 160 PRINT"WHITE HOUNDS WIN IF THEY BLOCK THE ONE" 170 PRINT"RED FOX IN THE RIGHTMOST SQUARE BY THEIR"; 180 PRINT"20TH MOVE. [212]HE FOX WINS ALL THE REST," 190 PRINT"SUCH AS BY REACHING THE LEFTMOST SQUARE" 200 PRINT"OR EVEN IF TRAPPED ON THE WRONG SQUARE." 210 PRINT" [212]HE FOX CAN MOVE TO ANY EMPTY" 220 PRINT"CONNECTING SQUARE. [193] HOUND CAN MOVE UP," 230 PRINT"DOWN, RIGHT, RIGHT-AND-UP, AND" 240 PRINT"RIGHT-AND-DOWN, BUT NEVER TO THE LEFT.":PRINT 250 PRINTTAB(7);"[144]@[161]@[161]@ [182][181] [162][182][181]" 260 PRINTTAB(6);"[181][182][162][182][181][182][162] @[161] [161]@[161]" 270 PRINTTAB(5);"@[161]@[161]@[161]@[161]@ [182][162] [181][182][162]" 280 PRINTTAB(6);"[162][182][181][182][162][182][181]" 290 PRINTTAB(7);"@[161]@[161]@ [200]OUND [198]OX" 300 PRINTTAB(5);"[212]HE [194]OARD [205]OVES [205]OVES":POKE198,0 310 DIML%(11,11),S%(165),R%(30,2),A%(165,11),W%(3) 320 I=1:FORL=1TO9:L1=FNT(L):FORM=L+1TO10:M1=FNT(M) 330 FORR=M+1TO11:S%(I)=L1+M1+FNT(R):I=I+1:NEXTR,M,L 340 FORI=1TO30:FORJ=1TO2:R%(I,J)=0:NEXTJ,I 350 FORI=1TO11:FORJ=1TO11:READL%(I,J):NEXTJ,I 360 PRINT" [208]RESS A KEY" 370 GETZ$:IFZ$=""THEN370 380 RETURN 390 REM NEW GAME BEGINS HERE 400 W%(1)=1:W%(2)=2:W%(3)=4:I0=1 410 B=INT(RND(0)*9)+3:IFB=4THEN410 420 GOSUB1470 430 REM MAIN PROGRAM LOOP 440 R=18:C=6:GOSUB1900:PRINTI0 450 IFN=2THENGOSUB1180:V=PEEK(49152+11*(S3-1)+B):X=(VAND240)/16:Y=VAND15:GOTO740 460 F$="[133]":W%(0)=B:FORI=1TO3:IFW%(I)=11THEN520 470 FORJ=2TO11:IFL%(W%(I),J)<>2THEN510 480 FORK=0TO3:IFW%(K)=JTHENK=5 490 NEXTK:IFK>5THEN510 500 F$=F$+CHR$(W%(I)+64):J=11 510 NEXTJ 520 NEXTI 530 IFF$="[133]"THEN1050 540 R=18:C=31:GOSUB1900:PRINT"F1[144] [209]UIT." 550 J=1:R=21:C=0:GOSUB1900:PRINT"[200]OUND MOVES FROM":POKE 198,0 560 GETA$:IFA$=""THEN560 570 IFA$>="[193]"THENA$=CHR$(ASC(A$)-128) 580 FORI=1TOLEN(F$):IFA$=MID$(F$,I,1)THENJ=I+1:R=18:C=31:GOSUB1900:PRINT" " 590 NEXT:ONJGOTO560,1050,600,600,600 600 X=ASC(A$)-64 610 R=21:C=17:GOSUB1900:PRINTCHR$(X+192);";" 620 F$="":FORJ=2TO11:IFL%(X,J)<>2THEN660 630 FORK=0TO3:IFW%(K)=JTHENK=5 640 NEXTK:IFK>5THEN660 650 F$=F$+CHR$(J+64) 660 NEXTJ 670 J=1:R=21:C=20:GOSUB1900:PRINT"MOVES TO ";:POKE198,0 680 GETA$:IFA$=""THEN680 690 IFA$>="[193]"THENA$=CHR$(ASC(A$)-128) 700 FORI=1TOLEN(F$):IFA$=MID$(F$,I,1)THENJ=I+1 710 NEXT:IFJ=1THEN680 720 Y=ASC(A$)-64 730 R=21:C=0:GOSUB1900:PRINTB1$ 740 I=1 750 IFW%(I)=XTHENW%(I)=Y:GOTO770 760 I=I+1:IFI<4THEN750 770 Z=X:GOSUB1780:PRINTB$:Z=Y:GOSUB1780:PRINTW$ 780 GOSUB1180: REM LEGAL MOVE; WHAT IS WHITE POSITION INDEX (S3) 790 IFN=1THEN970 800 F$="[133]":FORJ=1TO11:IFL%(B,J)=0THEN840 810 FORK=1TO3:IFW%(K)=JTHENK=5 820 NEXT:IFK>5THEN840 830 F$=F$+CHR$(J+64) 840 NEXTJ 850 IFF$="[133]"ANDB<>11THEN1050 860 IFF$="[133]"THEN1060 870 R=18:C=31:GOSUB1900:PRINT"F1[144] [209]UIT." 880 R=21:C=0:GOSUB1900:PRINT"[198]OX MOVES TO":J=1:POKE198,0 890 GETA$:IFA$=""THEN890 900 IFA$>="[193]"THENA$=CHR$(ASC(A$)-128) 910 FORI=1TOLEN(F$):IFA$=MID$(F$,I,1)THENJ=I+1:R=18:C=31:GOSUB1900:PRINT" " 920 NEXT:IFJ=1THEN890 930 IFJ=2THEN1060 940 R=21:C=0:GOSUB1900:PRINTB1$ 950 M4=ASC(MID$(F$,J-1,1))-64:GOTO1010 960 REM WHAT IS REDS BEST MOVE, IF ANY 970 GOSUB1230:IFM4=0ANDB=11THEN1060 980 IFM4=0THEN1050 990 REM RED MOVES TO M4 1000 R%(I0,1)=S3:R%(I0,2)=M4 1010 Z=B:GOSUB1780:PRINTB$:B=M4:Z=B:GOSUB1780:PRINTR$ 1020 I0=I0+1:IFI0>20THEN1050 1030 IFB>1THEN440 1040 REM GAME ENDS 1050 R=21:C=0:GOSUB1900:PRINT" [198]OX WINS.";:W=1:GOTO1070 1060 R=21:C=0:GOSUB1900:PRINT" [200]OUNDS WIN.";:W=-1:I=0 1070 IFN=1THENFORI6=1TOI0-1:S=R%(I6,1):M=R%(I6,2):A%(S,M)=A%(S,M)+W:NEXT:REM FOX LEARN 1080 PRINT" [215]ANT TO PLAY AGAIN? (Y[144]/N[144])":POKE198,0 1090 GETZ$:IFZ$<>""THEN1140 1100 IFW=-1THEN1120 1110 Z=B:GOSUB1780:PRINTB$:POKE53280,2:GOSUB1780:PRINTR$:POKE53280,15:GOTO1090 1120 I=I+1:IFI>3THENI=1 1130 Z=W%(I):GOSUB1780:PRINTB$:POKE53280,1:GOSUB1780:PRINTW$:POKE53280,15:GOTO1090 1140 IFZ$="Y"ORZ$="[217]"THEN60 1150 IFZ$<>"N"ANDZ$<>"[206]"THEN1090 1160 GOTO40000 1170 REM CALC NEW WHITE POSITION NUMBER 1180 A3=FNT(W%(1))+FNT(W%(2))+FNT(W%(3)):S3=1 1190 IFS%(S3)=A3THEN1210 1200 S3=S3+1:IFS3<166THEN1190 1210 RETURN 1220 REM PICK REDS BEST MOVE 1230 M4=0:FORI4=1TO11:IFL%(B,I4)=0THEN1310 1240 REM NEIGHBOR SQUARE FOUND. WHITE OCCUPIED? 1250 J4=1 1260 IFW%(J4)=I4THEN1310 1270 J4=J4+1:IFJ4<4THEN1260 1280 IFM4=0THEN1300 1290 IFA%(S3,M4)>=A%(S3,I4)THEN1310 1300 M4=I4 1310 NEXT:RETURN:REM REDS BEST MOVE 1320 REM DATA FOR L%(I,J) ARRAY 1330 REM L%(I,J)=0 MEANS I TO J NOT LEGAL 1340 REM L%(I,J)=1 MEANS I TO J LEGAL FOX ONLY 1350 REM L%(I,J)=2 MEANS I TO J LEGAL BOTH HOUND AND FOX 1360 DATA0,2,2,2,0,0,0,0,0,0,0 1370 DATA1,0,2,0,2,2,0,0,0,0,0 1380 DATA1,2,0,2,0,2,0,0,0,0,0 1390 DATA1,0,2,0,0,2,2,0,0,0,0 1400 DATA0,1,0,0,0,2,0,2,0,0,0 1410 DATA0,1,1,1,2,0,2,2,2,2,0 1420 DATA0,0,0,1,0,2,0,0,0,2,0 1430 DATA0,0,0,0,1,1,0,0,2,0,2 1440 DATA0,0,0,0,0,1,0,2,0,2,2 1450 DATA0,0,0,0,0,1,1,0,2,0,2 1460 DATA0,0,0,0,0,0,0,1,1,1,0 1470 PRINT"[147]";TAB(12);"[198][207][216] [193][206][196] [200][207][213][206][196][211]" 1480 PRINTTAB(11);"[185][185][185][185] [185][185][185][185] [185][185][185][185]" 1490 PRINTTAB(10);"[172] [191] [172] [191] [172] [191]" 1500 PRINTTAB(10);"[172] [194] [165][185][188] [197] [165][185][188] [200] [191]" 1510 PRINTTAB(10);"[172] [191] [172] [191] [172] [191]" 1520 PRINTTAB(10);"[172] [191] [172] [191] [172] [191]" 1530 PRINTTAB(10);"[181][176][180][176][176][162] [176][180][176][176] [181][176][180][176][176][162]" 1540 PRINTTAB(9);"[181] [172] [162] [172] [181] [172] [162]" 1550 PRINTTAB(4);"[185][185][185][185][181] [185][188][185][185] [162][185][188][185][185][181] [185][188][185][185] [162][185][185][185][185]" 1560 PRINT" [172][197][216][201][212][144][191] [172] [191] [172] [191] [172] [191] [172] [196][197][206][144][191]" 1570 PRINT" [172] [193] [165][185][188] [195] [165][185][188] [198] [165][185][188] [201] [165][185][188] [203] [191]" 1580 PRINT" [172] [191] [172] [191] [172] [191] [172] [191] [172] [191]" 1590 PRINT" [172] [191] [172] [191] [172] [191] [172] [191] [172] [191]" 1600 PRINTTAB(4);"[176][176][176][176][162] [176][180][176][176] [181][176][180][176][176][162] [176][180][176][176] [181][176][176][176][176]" 1610 PRINTTAB(9);"[162] [172] [181] [172] [162] [172] [181]" 1620 PRINTTAB(10);"[162][185][188][185][185][181] [185][188][185][185] [162][185][188][185][185][181]" 1630 PRINTTAB(10);"[172] [191] [172] [191] [172] [191]" 1640 PRINTTAB(10);"[172] [196] [165][185][188] [199] [165][185][188] [202] [191]" 1650 PRINT" [205]OVE";I0;TAB(10);"[172] [191] [172] [191] [172] [191]" 1660 PRINTTAB(10);"[172] [191] [172] [191] [172] [191]" 1670 PRINTTAB(10);" [176][176][176][176] [176][176][176][176] [176][176][176][176]" 1680 FORI=1TO3:Z=W%(I):GOSUB1780:PRINTW$:NEXT 1690 IFN=1THEN1760 1700 R=21:C=0:GOSUB1900:PRINT"[208]LACE FOX ON EMPTY SQUARE.":J=1:POKE198,0 1710 GETA$:IFA$=""THEN1710 1720 F$="CEFGHIJK":IFA$>"[193]"THENA$=CHR$(ASC(A$)-128) 1730 FORI=1TO8:IFA$=MID$(F$,I,1)THENJ=I+1:R=21:C=0:GOSUB1900:PRINTB1$ 1740 NEXT:IFJ=1GOTO1710 1750 B=ASC(A$)-64 1760 Z=B:GOSUB1780:PRINTR$ 1770 RETURN 1780 ONZGOTO1790,1800,1810,1820,1830,1840,1850,1860,1870,1880,1890 1790 R=11:C=4:GOTO1900 1800 R=4:C=11:GOTO1900 1810 R=11:C=11:GOTO1900 1820 R=18:C=11:GOTO1900 1830 R=4:C=18:GOTO1900 1840 R=11:C=18:GOTO1900 1850 R=18:C=18:GOTO1900 1860 R=4:C=25:GOTO1900 1870 R=11:C=25:GOTO1900 1880 R=18:C=25:GOTO1900 1890 R=11:C=32 1900 POKE781,R:POKE782,C:POKE783,0:SYS65520:RETURN 1910 GOSUB3000 1920 PRINT" [212]HE FOX GETS TO CHOOSE ITS FIRST" 1930 PRINT"SQUARE, BUT THE HOUNDS (COMPUTER OR" 1940 PRINT"HUMAN) ALWAYS GET TO MOVE FIRST." 1950 PRINT:PRINT" [215]HEN THE COMPUTER IS THE FOX, THE FOX" 1960 PRINT"STARTS OUT KNOWING ONLY THE MOVES, BUT" 1970 PRINT"LEARNS FROM [217][207][213], CHANGING ITS MOVES WHEN"; 1980 PRINT"YOU BEAT IT AND REPEATING ITS WINNING" 1990 PRINT"MOVES. [194]UT WHEN THE COMPUTER DIRECTS" 2000 PRINT"THE HOUNDS, THE HOUNDS WILL ALWAYS WIN." 2010 PRINT" [195]HOOSE ONE OF THE FOLLOWING:" 2020 PRINT" 1[144] [200]UMAN [200]OUNDS VS [195]OMPUTER [198]OX" 2030 PRINT" 2[144] [195]OMPUTER [200]OUNDS VS [200]UMAN [198]OX" 2040 PRINT" 3[144] [200]UMAN [200]OUNDS VS [200]UMAN [198]OX":POKE198,0 2050 GETA$:IFA$=""THEN2050 2060 IFA$<"1"ORA$>"3"THEN2050 2070 N=VAL(A$):RETURN 3000 PRINT"[147] [176][192][174][176][192][174][174] [176] [178] [178][176][192][174][178] [178][176][174][174][178][192][174][176][192][174] [176][192][174] 3010 [153]" -< (null) (null) (null) WAITATN(null)STR$ -TAN<(null) (null)(null) (null)(null)(null)(null)(null) (null)/TAN^ ORTANEXP 3020 PRINT" [177] [173][192][189][189] [173] [189] [173][173][192][189][173][192][189][189][173][189][177][192][189][173][192][189] [173][192][189][146]" 3040 RETURN 10000 D=PEEK(186):N$="0:B.FOX & HOUNDS 2":OPEN15,D,15,"S"+N$:CLOSE15:SAVEN$,D:END 40000 FORI=8TO29:POKE820+I,I:NEXT:IFDV>8ANDDV<30THENPOKE828,DV:POKE820+DV,8 40010 A$="PRESENTER":GOSUB40030:A$="HELLO CONNECT":GOSUB40030 40020 PRINT"[147]":POKE53272,23:POKE186,8:POKE2048,0:POKE44,8:POKE43,1:END 40030 FORJ=8TO29:I=PEEK(820+J):IFI=14THENNEXT 40040 CLOSE2:OPEN2,I,2:CLOSE2:IFSTTHEN40060 40050 CLOSE15:OPEN15,I,15,"R0:"+A$+"="+A$:INPUT#15,ER:CLOSE15:IFER=63THEN40070 40060 NEXT:RETURN 40070 A$="HELLO CONNECT":Q$=CHR$(34):POKE646,PEEK(53281):PRINT"[147]":POKE53272,23 40080 PRINT"[147]P[207]2048,0:P[207]44,8:P[207]43,1:P[207]56,160:P[207]55,0:CLR:L[207]"Q$A$Q$","I 40090 PRINT"RUN:":POKE631,13:POKE632,13:POKE198,2:END